It is often difficult for users of computing resources to utilize such computing resources in an efficient, cost effective manner. For example, such users may have computing needs which vary greatly in time, and may not wish to invest in a quantity of computing resources necessary to manage computational loads during periods of high usage. For example, a business with a large number of employees may wish to process payroll for all employees only once, e.g., at the end of each month. In such scenarios, the business may require computing resources at the end of each month in a quantity that is disproportionate to computing resources needed during the remainder of the month. Consequently, it may be inefficient for the business to invest in sufficient computing resources to handle the payroll processing of the above example, since a significant portion of such computing resources would sit idle during the remainder of the month. In these and other scenarios, users of computing resources may be unwilling or unable to bear the costs associated with purchasing and managing a level of computing resources necessary to meet all of the user's computing needs.
Therefore, providers of software, infrastructure, and other computing resources have implemented a business model in which computing resources are provided to users on an as-needed, on-demand, dynamic basis, according to the particular and fluctuating demands of the customers of such providers. Such providers are known as, or may be referred to as, “software as a service” (Saas) providers, and/or “infrastructure as a service” (Iaas) providers. Such providers typically invest in the relatively large amount of servers and related computer/network equipment needed to remotely provide computing resources to their customers. For example, in the example described above, the business with the described payroll processing needs may have an agreement in place with a Saas provider to utilize a relatively low amount of computing resources through much of the month, and to have access to a relatively larger amount of computing resources at the end of each month when payroll processing occurs.
Thus, such service providers may provide software, infrastructure, and other computing resources to a large number of businesses or other customers, and may therefore bear the burden of utilizing available computing resources in an efficient, cost effective manner. In order to do so, such service providers typically receive requests for computing resources, and dynamically schedule the received requests among available servers or other computing nodes. In many cases, such service providers may deploy a very large quantity of computing resources, and may have service agreements in place with a relatively large number of service consumers, each of which may require varying and potentially large amounts of the available computing resources. As a result, it may be difficult for service providers to allocate the available computing resources in a desired, efficient, and cost effective manner.